﻿using BLevy.Entidad;
using BLevy.Negocio;
using Microsoft.Reporting.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BLevy.UI
{
    public partial class frmSociosReporteGeneral : Form
    {
        private IList<Socio> socios;
        public frmSociosReporteGeneral(IList<Socio> _socios)
        {
            InitializeComponent();

            socios = _socios;
        }

        private void frmSociosReporteGeneral_Load(object sender, EventArgs e)
        {
            try
            {
                var query = from fila in socios
                            select new
                            {
                                ID = fila.id,
                                NUMERO_CERTIFICADO = fila.numero_certificado,
                                APELLIDO = fila.apellido,
                                NOMBRES = fila.nombres,
                                DOCUMENTO = fila.documento,
                                FECHA_NACIMIENTO = fila.fecha_nacimiento,
                                FECHA_INGRESO = fila.fecha_ingreso,
                                ZONA = fila.zona.zona

                            };

                ReportDataSource rds = new ReportDataSource();
                rds = new ReportDataSource("DataSet1", query);

                this.reportViewer1.LocalReport.ReportEmbeddedResource = "BLevy.UI.Reportes.ReporteSociosGenerico.rdlc";
                this.reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubReportGetAdherentes);
                this.reportViewer1.LocalReport.DataSources.Add(rds);
                this.reportViewer1.RefreshReport();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void SubReportGetAdherentes(object sender, SubreportProcessingEventArgs e)
        {
            try
            {
                int socio_id = int.Parse(e.Parameters["SOCIO_ID"].Values[0].ToString());
                ReportDataSource rds = new ReportDataSource("adherentes", GetAdherentesPorSocioId(socio_id));
                e.DataSources.Add(rds);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private IList<Adherente> GetAdherentesPorSocioId(int socio_id)
        {
            IList<Adherente> adherentesL = null;

            try
            {
                adherentesL = Adherentes.FindByIdSocio(socio_id);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return adherentesL;
        }



    }
}
